#include <stdio.h>
#include <stdlib.h>
 
typedef char ElemType;
 
typedef struct LNode {
    ElemType data;
    struct LNode *next;        
} LinkNode;                     
 
/**
 * 尾插法建立单链表：裁判实现
 */
void CreateListR(LinkNode *&L, ElemType a[], int n);
 
/**
 * 输出线性表: 每个数据后面一个空格：裁判实现
 */
void DispList(LinkNode *L);
 
/**
 * 将L中所有数据结点按x进行划分。
 * 所有小于x的结点排在大于等于x的结点前面。
 * 必须保证两个分区中每个节点的初始相对位置。
 */
void Split(LinkNode *&L, ElemType x);
 
int main()
{
    int n;
    scanf("%d", &n);
    ElemType a[n];
    for (int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
 
    LinkNode *L;
    CreateListR(L, a, n);
    printf("L:"); DispList(L);
    ElemType x;
    scanf("%d", &x);
    printf("以%d进行划分\n", x);
    Split(L, x);
    printf("L:"); DispList(L);
    return 0;
}